公司正好有自己的短信接口平台,接下来带大家一起配置nagios调用第三方短信接口。
- 首先我们要写一个调用短信接口的脚本,网上的脚本大都是python写的,我这个是shell写的,比较好理解。
脚本的日志文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| LOGFILE="/data1/sms_log/sms_send_.log" :>>"$LOGFILE" exec 1>>"$LOGFILE" exec 2>&1 Uid="test" Key="123456" MOBILE_NUMBER=$1 QIANMING="%e3%80%90%e9%a9%ac%e5%8f%af%e6%b3%a2%e7%bd%97%e7%bd%91%e3%80%91" XXD="/usr/bin/xxd" CURL="/usr/bin/curl" TIMEOUT=5 MESSAGE_ENCODE=$(echo $(/usr/local/bin/php -r "echo urlencode(\"$2\");"; ) ) URL="http://192.168.100.100:8888/services/msgsend.asmx/SendMsg?userCode=${$Uid}&userPass=${Key}&DesNo=${MOBILE_NUMBER}&Msg=${MESSAGE_ENCODE}${QIANMING}&Channel=0" set -x ${CURL} -s --connect-timeout ${TIMEOUT} "${URL}"
|
- 测试脚本
1
| bash /root/duanxin.sh "手机号" “内容”
|
如果脚本报错,可以根据报错信息检查脚本,如果脚本没有问题,但是短信发不出去,可以看看sms_send_log里面的报错信息
- nagios 调用脚本,不要忘记脚本要给执行权限,一般脚本放在root目录下,nagios在调用脚本时是不能访问root目录的,所以你还要看你/root目录的权限
1 2 3 4 5 6 7 8 9
| define command { command_name host-notify-by-sms command_line /root/duanxin.sh $CONTACTPAGER$ "$HOSTNAME$ $HOSTSTATE$ $SHORTDATETIME$" } define command { command_name service-notify-by-sms command_line /root/duanxin.sh $CONTACTPAGER$ "$SERVICESTATE$ $SERVICEOUTPUT$ $HOSTALIAS$/$SERVICEDESC$ $SHORTDATETIME$" }
|
- 看到这里大家可能对上面脚本的$1和$2概念比较模糊,其实刚开始我也迷糊,nagios怎么知道我要发送的号码呢,后来研究发现,$CONTACTPAGER$这个
量就是nagios内部联系人的变量,也就是他会调用我们在contacts.cfg里面定义的手机号,而我们脚本里面定义的$1就对应$CONTACTPAGER$,$2就对应”$HOSTNAME$ $HOSTSTATE$ $SHORTDATETIME$”